﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using Crosland.Automotriz.Entidad;
using System.Data;

namespace Crosland.Automotriz.Web.Vehiculos
{
	public partial class FrmProduccionEncajonadoNuevo : BaseForm
	{
		iFacadeProduccionArmadoVehiculos BI_PRODUCCION_VEHI_ARMADO = new FacadeProduccionArmadoVehiculos();

		protected override void Inicializar()
		{
			ListarEstado();
			Centros();
            cboCentro.SelectedIndex = 0;
			CargarEquipos();
			cboEquipo.SelectedIndex = 0;
            CrearTablaEncajonadoPendiente();
		}

		public void Centros()
		{

			cboCentro.DataSource = BI_PRODUCCION_VEHI_ARMADO.ListarCentros();
			cboCentro.TextField = "DES_CENTRO";
			cboCentro.ValueField = "ID_CENTRO";
			cboCentro.DataBind();

		}

		public void CargarEquipos()
		{
            int idCentro = Convert.ToInt32(cboCentro.Value);
			cboEquipo.DataSource = BI_PRODUCCION_VEHI_ARMADO.ListarEquipos("Encajonado",idCentro);
			cboEquipo.TextField = "NOMBRE_EQUIPO";
			cboEquipo.ValueField = "ID_OPE_MAE_EQUIPOS_CAB";
			cboEquipo.DataBind();
		}

		protected void ListarEstado()
		{
			cboEstado.DataSource = BI_PRODUCCION_VEHI_ARMADO.EncajonadosPendientes();
			cboEstado.TextField = "DES_CORTA";
			cboEstado.ValueField = "ID_GENERAL_DET";
			cboEstado.DataBind();

			cboEstado.SelectedIndex = 0;
		}

		protected void btnSalir_Click(object sender, EventArgs e)
		{
			Response.Redirect("/Vehiculos/wFrmProduccionEncajonado.aspx?id=97&sub=99");
		}

		protected void BuscarVehiPendienteEncajonar()
		{

			List<T_LOG_VEHICULOS_ENCAJONADOS> DatosVehiculos = new List<T_LOG_VEHICULOS_ENCAJONADOS>();
			int idCentro = Convert.ToInt32(cboCentro.Value);
			string nroMotor = txtNroMotor.Text;
			DatosVehiculos = BI_PRODUCCION_VEHI_ARMADO.BuscarVehiPendienteEncajonar(idCentro,nroMotor);

			dgvEncajonados.DataSource = DatosVehiculos;
			dgvEncajonados.DataBind();


		}

		protected void btnBuscar_Click(object sender, EventArgs e)
		{
            if (String.IsNullOrEmpty(txtNroMotor.Text))
			{
				lblMsj.Text = "Ingrese un numero de Motor.";
				popupMsj.ShowOnPageLoad = true;
                dgvEncajonados.DataSource = null;
                dgvEncajonados.DataBind();
			}
            else if (txtNroMotor.Text.Length <= 4)
            {
                lblMsj.Text = "Ingrese ultimos 5 digitos.";
                popupMsj.ShowOnPageLoad = true;
                dgvEncajonados.DataSource = null;
                dgvEncajonados.DataBind();
            }
            else
            {
                BuscarVehiPendienteEncajonar();
            }
		}

		protected void btnIniciar_Click(object sender, EventArgs e)
		{
            //string idVehiculo = Convert.ToString(dgvEncajonados.GetRowValues(dgvEncajonados.FocusedRowIndex, "ID_VEHICULO_ARMADO"));

            //if (String.IsNullOrEmpty(idVehiculo))
            //{
            //    lblMsj.Text = "Seleccione un vehiculo.";
            //    popupMsj.ShowOnPageLoad = true;
            //    BuscarVehiPendienteEncajonar();
            //}
            //else
            //{
				popupConfirmacion.ShowOnPageLoad = true;
			//}
		}

		protected void btnSI_Click(object sender, EventArgs e)
		{
            DateTime fecIni = DateTime.Now;
			string cod_usuario = Session["User"].ToString();
			int idEquipo=Convert.ToInt32(cboEquipo.Value);
            int idCentro=Convert.ToInt32(cboCentro.Value);

			try
			{


				Boolean blVerificaGrabacion = false;

                blVerificaGrabacion = BI_PRODUCCION_VEHI_ARMADO.GuardarEncajonadoVehiculos(fecIni, cod_usuario, 3, idEquipo);

                int idCab = BI_PRODUCCION_VEHI_ARMADO.NumeroGeneradoGuardarEncajonado();

				if (blVerificaGrabacion == true)
				{
                    if (idCab > 0)
                    {
                        CrearTablaEncajonadoPendiente();

                        DataTable dt = new DataTable();
                        dt = (DataTable)Session["TablaEncajonados"];

                        for (int x = 0; x < dt.Rows.Count; x++)
                        {
                            BI_PRODUCCION_VEHI_ARMADO.GuardarProcesoEncajonadoDet(idCab, dt.Rows[x][3].ToString(), x + 1, 0, 140, dt.Rows[x][1].ToString(), dt.Rows[x][2].ToString());
                        }
                    }
                    else
                    {
                        lblMsj.Text = "Error al guardar el detalle del vehiculo.";
                        popupMsj.ShowOnPageLoad = true;
                    }

                    Session["TablaEncajonados"] = null;
                    Response.Redirect("/Vehiculos/wFrmProduccionEncajonado.aspx?id=97&sub=99");

				}
				else
				{
					lblMsj.Text = "Error al iniciar el proceso de armado.";
					popupMsj.ShowOnPageLoad = true;
				}


			}
			catch (Exception)
			{


			}


		}

        protected void CrearTablaEncajonadoPendiente()
        {
            DataTable dt = new DataTable();

            if (Session["TablaEncajonados"] == null)
            {
                dt.PrimaryKey = new DataColumn[] { dt.Columns.Add("ID", typeof(string)) };
                dt.Columns.Add("NRO_MOTOR", System.Type.GetType("System.String"));
                dt.Columns.Add("NRO_CHASIS", System.Type.GetType("System.String"));
                dt.Columns.Add("NRO_LOTE", System.Type.GetType("System.String"));
                dt.Columns.Add("COD_MATERIAL", System.Type.GetType("System.String"));
                dt.Columns.Add("DES_MODELO", System.Type.GetType("System.String"));
                dt.Columns.Add("CLIENTE", System.Type.GetType("System.String"));
                Session["TablaEncajonados"] = dt;

            }
            else
            {
                dt = (DataTable)Session["TablaEncajonados"];
            }

        }

        protected void dgvEncajonados_RowCommand(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
        {
            CrearTablaEncajonadoPendiente();

            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaEncajonados"];
            DataRow dr;
            string nroLote = e.CommandArgs.CommandArgument.ToString();

            DataRow[] Fila = dt.Select("NRO_LOTE='" + nroLote + "'");
            int cont = Fila.Count();

            if(cont>0)
            {
                lblMsj.Text = "El registro seleccionado, ya fue agregado.";
                popupMsj.ShowOnPageLoad = true;
            }
            else
            {
            
                if (e.CommandArgs.CommandName == "Agregar")
                {
                    List<T_LOG_VEHICULOS_ARMAR> VehiculosArmar = new List<T_LOG_VEHICULOS_ARMAR>();
                    VehiculosArmar = BI_PRODUCCION_VEHI_ARMADO.BuscarLote(nroLote);
                    dr = dt.NewRow();
                    dr.BeginEdit();
                    dr["ID"] = dt.Rows.Count + 1;
                    dr["NRO_MOTOR"] = VehiculosArmar[0].NRO_MOTOR;
                    dr["NRO_CHASIS"] = VehiculosArmar[0].NRO_CHASIS;
                    dr["NRO_LOTE"] = VehiculosArmar[0].NRO_LOTE;
                    dr["COD_MATERIAL"] = VehiculosArmar[0].COD_MATERIAL;
                    dr["DES_MODELO"] = VehiculosArmar[0].DES_MODELO;
                    dr["CLIENTE"] = VehiculosArmar[0].CLIENTE;
                    dr.EndEdit();
                    dt.Rows.Add(dr);

                    Session["TablaEncajonados"] = dt;

                    gvEncajonar.DataSource = dt;
                    gvEncajonar.DataBind();

                }

            }

            
        }

        protected void gvEncajonar_RowCommand(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
        {

            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaEncajonados"];

            string Id = e.CommandArgs.CommandArgument.ToString();

            if (e.CommandArgs.CommandName == "Quitar")
            {
                DataRow row = (dt.Rows.Find(Id));
                dt.Rows.Remove(row);

                ReenumerarItem(dt);

                Session["TablaEncajonados"] = dt;

                this.gvEncajonar.DataSource = dt;
                this.gvEncajonar.DataBind();

            }


        }

        protected void ReenumerarItem(DataTable d)
        {
            for (int x = 0; x <= d.Rows.Count - 1; x++)
            {
                d.Rows[x].BeginEdit();
                d.Rows[x][0] = x + 1;
                d.Rows[x].EndEdit();
            }

        }


	}
}